package com.twd.nio;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.util.Scanner;

public class MyClient {
    /**
     * n 张多米诺骨牌排成一行，将每张多米诺骨牌垂直竖立。在开始时，同时把一些多米诺骨牌向左或向右推。
     *
     * 每过一秒，倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样地，倒向右边的多米诺骨牌也会推动竖立在其右侧的相邻多米诺骨牌。
     *
     * 如果一张垂直竖立的多米诺骨牌的两侧同时有多米诺骨牌倒下时，由于受力平衡， 该骨牌仍然保持不变。
     *
     * 就这个问题而言，我们会认为一张正在倒下的多米诺骨牌不会对其它正在倒下或已经倒下的多米诺骨牌施加额外的力。
     *
     * 给你一个字符串 dominoes 表示这一行多米诺骨牌的初始状态，其中：
     *
     *     dominoes[i] = 'L'，表示第 i 张多米诺骨牌被推向左侧，
     *     dominoes[i] = 'R'，表示第 i 张多米诺骨牌被推向右侧，
     *     dominoes[i] = '.'，表示没有推动第 i 张多米诺骨牌。
     *
     * 返回表示最终状态的字符串。
     *
     * @param args
     * @throws IOException
     * @throws InterruptedException
     */
    public static void main(String[] args) throws IOException, InterruptedException {
        //得到一个网络通道
        SocketChannel socketChannel = SocketChannel.open();
        //设置非阻塞
        socketChannel.configureBlocking(false);
        //提供服务器的ip 和 端口
        InetSocketAddress inetSocketAddress = new InetSocketAddress("127.0.0.1", 9999);

        //连接服务器
        if (!socketChannel.connect(inetSocketAddress)) {
            while(!socketChannel.finishConnect()){
                System.out.println("因为连接需要时间,客户端不会阻塞,可以做其他工作...");
            }
        }
        //...如果连接成功, 就发送数据
        String str = "aaaaaaaa";
        //包裹为字节数组
        //发送数据, 将buffer 数据写入channel
//        socketChannel.write(buffer);
        Scanner scanner = new Scanner(System.in);
        ByteBuffer allocate = ByteBuffer.allocate(1024);
        while(scanner.hasNext()) {
//            allocate.put("aaa".getBytes());
//            allocate.flip();
            allocate.put(str.getBytes());
            String s = scanner.nextLine();
            socketChannel.write(allocate);
            System.out.println("write");
        }

    }
}
